package br.com.harley.torneio.util;

import java.io.Serializable;
import java.util.MissingResourceException;

import javax.inject.Inject;

import org.slf4j.Logger;

import br.gov.frameworkdemoiselle.annotation.Name;
import br.gov.frameworkdemoiselle.message.DefaultMessage;
import br.gov.frameworkdemoiselle.message.Message;
import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.util.ResourceBundle;

@BusinessController
public class MensagemUtil implements Serializable {

	private static final long serialVersionUID = 6323909058907100517L;

	@Inject
	@Name("ValidationMessages")
	private ResourceBundle bundle;

	/**
	 * {@link Logger} da classe.
	 */
	@Inject
	private Logger logger;

	private final String MENSAGEM_NAO_ENCONTRADA = "Mensagem de erro não encontrada!";

	public String recuperarMensagemAplicacao(String codigoMensagem, Object... parametros) {
		try {
			return bundle.getString(codigoMensagem, parametros);
		} catch (MissingResourceException e) {
			return MENSAGEM_NAO_ENCONTRADA;
		}
	}

	public Message recuperarMessage(String codigoMensagem, Object... parametros) {
		String msg = this.recuperarMensagemAplicacao(codigoMensagem, parametros);
		return new DefaultMessage(msg, parametros);
	}

	/**
	 * Busca a mensagem de erro.
	 * 
	 * @param msg
	 *            Código da mensagem.
	 * @param parametros
	 *            Parâmetros da mensagem.
	 * @return {@link Message}.
	 */
	public Message buscaMensagem(String msg, Object... parametros) {
		return recuperarMessage(msg, parametros);
	}

}
